// These are meant to be typed into the REPL. You can also run
// scala -Xnojline < repl-session.scala to run them all at once.
/**
  * 7.2Getter、Setter方法
  * 对于scala类中的每一个属性，编译后，会有一个私有的字段和相应的
  * getter、setter方法生成，比如：
  */
class Person {
  var age = 0
}

val fred = new Person
// setter方法
fred.age = 21
println(fred.age)
fred.age_=(25)
// getter方法
println(fred.age)

/**
  * 如果属性为 age，那么 getter 方法名叫 age， setter 方法名为 age_=
  * 你也可以重定义 getter、 setter 方法：
  */
class Person2 {
  private var privateAge = 0 // Make private and rename
  def age = privateAge
  def age_=(newValue: Int) {
    if (newValue > privateAge) privateAge = newValue; // Can’t get younger
  }
}

val fred1 = new Person2
fred1.age = 30
fred1.age = 21
println(fred1.age)

